Generating visualizations from keyword searches of color palettes

ABSTRACT

Systems and methods are described herein to generate visualizations associated with color palettes identified from keyword searches. Color palettes may include colors determined by human color preferences. Color palettes may be searched by name or other data associated with the color palettes based at least in part on text or audio data. Visualizations such as mood lighting and/or atmosphere colors may be based at least in part on the searched color palettes.

BACKGROUND

Generally described, computing devices may search for information basedon a keyword and provide results related to colors. A color or colorpalettes may be associated with clothes, artwork, images, video, andother visual media to provide a certain or desired look and feel. Inelectronic commerce, items are associated with various colors or colorpalettes. In one system, an image or record may be tagged with a colordescription in a data store. A user may input a keyword (e.g., “green”)and any images or records matching the keyword “green” may be returnedin a search. In another system, user generated color palettes may bestored by name. A user may input a keyword (e.g., “pastel”) and colorpalettes with names exactly matching the keyword “pastel” may bereturned in a search.

BRIEF DESCRIPTION OF THE DRAWINGS

Aspects and advantages of the embodiments provided herein are describedwith reference to the following detailed description in conjunction withthe accompanying drawings. Throughout the drawings, reference numbersmay be re-used to indicate correspondence between referenced elements.The drawings are provided to illustrate example embodiments describedherein and are not intended to limit the scope of the disclosure.

FIG. 1 illustrates a block diagram of an example operating environmentfor determining data based on keyword searches of one or more colorpalettes.

FIG. 2 depicts a general architecture of a computing device providing akeyword service used in accordance with the operating environment ofFIG. 1.

FIG. 3 is a flow diagram of an illustrative method implemented at leastin part by a keyword service for determining data based on keywordsearches of one or more color palettes.

FIG. 4 is a flow diagram of an illustrative method implemented at leastin part by a keyword service for additional color palette processing.

FIG. 5 illustrates example color palettes including colors and a palettename.

FIG. 6 is an illustrative user interface generated at least in part by akeyword service that includes an interactive configuration of images andcolor palettes that can be searched by keyword, according to someembodiments.

FIGS. 7A-B illustrate an example sequence of user interfacerepresentations illustrating color visualizations based on keywordsrelated to color palettes of audio and/or text content, according tosome embodiments.

FIGS. 8A-B illustrates example color palettes associated with historicaldata.

FIG. 9 illustrates example color palettes associated with historicalkeyword data.

DETAILED DESCRIPTION

Generally described, aspects of the present disclosure relate toidentifying images or items (e.g., goods and/or services) based on akeyword search of color palettes that have been ranked or voted on bypeople. The present disclosure includes systems and methods configuredto identify data associated with a keyword search of color palettes. Thekeyword may be a non-color term suggestive of one or more colors. In oneexample, a merchandiser searches for a term and/or phrase such as “rainyday.” Color palettes associated with the search term may be retrievedbased on human generated names of the color palettes. Each color palettemay include one or more colors. A fast color search may be performed oneach color to retrieve one or more items and/or images sufficientlyincluding that color. In the merchandiser example, the items, which areassociated with colors from the retrieved human generated colorpalettes, may be returned to the merchandiser.

Palettes of colors can be used to design visual articles, such asartwork or clothes, so that the article is visually appealing. This canincrease the desirability of the article. In addition, palettes ofcolors can be used to evoke targeted reactions or emotions that areassociated with a look and feel of a visual presentation or article. Forexample, the colors of clothes can be selected to reflect trends incolors or to reflect a more classic or timeless look.

Systems may be designed to automatically generate color combinations.These systems may use algorithms to determine complementary colors,similar colors, colors arranged in a color space to cover predeterminedcolor distances, and the like to generate a palette of colors. However,mathematical and/or computer algorithms may not account for trends intaste and human color preferences. Individuals can also create colorpalettes. The resulting color palettes may be different than theformulaic or predictable palettes, which are generated automatically,yet visually appealing at least to the individual that created it. Thesecolor palettes may be ones that would generally not be created by amathematical and/or computer algorithm (e.g., a color palette thatincludes seemingly clashing colors). Furthermore, humans may associateother metadata with the color palettes, such as, names and/or tags,which may otherwise be difficult for a computer system to doautomatically and/or programmatically. These color palettes may then besearched (by name and/or metadata) and associated with items for displayto a user. Thus, reliance on human generated color palettes may yieldcolor palettes more visually interesting to users and/or with a widervariety of colors than palettes that are automatically generated bysystems that do not rely on human color preferences.

Aspects of the present disclosure use one or more data stores of colorpalettes, which have been rated, ranked, and/or voted on by a communityof people to indicate which color combinations are preferred by thatcommunity. As described herein, the color palettes and/or affiliatedcolors may be searched, determined, and/or retrieved. The color palettesand/or affiliated colors may contain colors, which are visuallyappealing or preferable because each color and/or color palette has beendetermined by the community. Affiliated colors will be discussed infurther detail below with reference to FIG. 4.

While a retail environment is often used as an example below, it will beappreciated that image, data, and/or color identification from keywordand/or text searching of color palettes, as disclosed herein, may beused in a variety of environments other than a retail environment. Forexample, aspects of the present disclosure, in some embodiments, may beused and/or implemented to efficiently identify or surface images and/orcolors related to color palettes within any user interface, page, video,electronic book and/or other electronic content. In addition, aspects ofthe present disclosure, in some embodiments, may be used by consumers,merchandisers, designers, architects, artists, landscapers, developers,garners, students, etc. for virtually any purpose. Without limitation,aspects of the present disclosure may be used for identifying imagesand/or colors related to color palettes in social networking contexts,digital photo albums, digital news articles, and/or visual bookmarkingcontexts. For illustrative purposes, item images are often describedbelow in the context of items listed in an electronic catalog.Alternatively, in other embodiments, item images that may be presentedaccording to the systems and methods described herein may includeadvertisements, images in news articles, editorial content, videos,classified listings, auction listings and/or any other content that maybe electronically presented to a user. As used herein, the term “item,”in addition to having its ordinary meaning, is used interchangeably torefer to an item itself (e.g., a particular product and/or object) andto its description or representation in a computer system or electroniccatalog. As will be apparent from the context in which it is used, theterm is also sometimes used herein to refer only to the item itself oronly to its representation in the computer system.

Turning now to FIG. 1, the figure illustrates a block diagram of anexample operating environment 100 that includes a keyword service 110 todetermine data based at least in part on a keyword associated with oneor more color palettes. In some embodiments, the operating environment100 includes the keyword service 110, a palette service 112, a colornaming service 114, an image service 116, an affiliated color service122, a palette data store 118, an item data store 150, a network 120,color data providers 130, and user computing devices 102. In someembodiments, various components of the operating environment 100 arecommunicatively interconnected with one another via the network 120. Theoperating environment 100 may include different components, additionalcomponents, fewer components, or can be structured differently. Forexample, there can be one or more data stores or other computing devicesin connection with the keyword service 110. As another example,components of the operating environment 100 may communicate with oneanother with or without the network 120. Those skilled in the art willrecognize that the user computing devices 102 may be any of a number ofcomputing devices that are capable of communicating over a networkincluding, but not limited to, a laptop, personal computer, personaldigital assistant (PDA), hybrid PDA/mobile phone, mobile phone,smartphone, electronic book reader, wearable computing device, digitalmedia player, tablet computer, gaming console or controller, kiosk,augmented reality device, other wireless device, set-top or othertelevision box, and the like.

The keyword service 110 can correspond to any system capable ofperforming the processes described herein. For example, the processesassociated with palette service 112, color naming service 114, imageservice 116, and/or affiliated color service 122 may be performed by thekeyword service and, therefore, separate services may be unnecessary.The keyword service 110 or other services may be implemented by one ormore computing devices. For example, the keyword service 110 may beimplemented by computing devices that include one or more processors toexecute one or more instructions, memory, and communication devices totransmit and receive data over the network 120. In some embodiments, thekeyword service 110 is implemented on one or more backend serverscapable of communicating over a network. In other embodiments, thekeyword service 110 is implemented by one or more virtual machines in ahosted computing environment (e.g., a “cloud computing environment”).The hosted computing environment may include one or more provisioned andreleased computing resources, which computing resources may includecomputing, networking or storage devices.

In some aspects, the keyword service 110 can correspond to one or moreapplications that perform, individually or in combination, the image,data, and/or color identification functions described herein, includingdetermining data from keyword searching of color palettes, determiningaffiliated color palettes associated with keyword searching of colorpalettes, retrieving color names associated with color palettes,retrieving color palettes based on historical trend data, or the likeand/or some combination thereof. In certain aspects, the keyword service110, the palette service 112, and/or the affiliated color service 122may be configured to store or update palettes at the palette data store118. In some embodiments, the keyword service 110 is associated with anetwork or network-based merchandise provider, vendor and/or otherparties.

In some embodiments, each of the palette data store 118 and/or item datastore 150 may be local to the keyword service 110, may be remote fromthe keyword service 110, and/or may be a network-based service itself.The palette data store 118 and/or item data store 150 may be embodied inhard disk drives, solid state memories, any other type of non-transitorycomputer-readable storage medium, and/or a file, a database, arelational database, in-memory cache, and/or stored in any suchnon-transitory computer-readable medium. The palette data store 118and/or item data store 150 may also be distributed or partitioned acrossmultiple local and/or storage devices without departing from the spiritand scope of the present disclosure. The palette data stored in thepalette data store 118 can be collections of colors generated by a useror system based at least in part on human color preferences. Palettedata can be of various formats, such as lists, integers, hexadecimalformat, vectors, arrays, matrices, etc. Metadata can be associated withindividual palettes, for purposes of indicating their format, tags,associations, popularity, date(s)/time(s) of creation/editing,geolocation data, last update time, semantics, features, conditions,associated demographics (e.g., geographical region, age, gender, ethnicgroup, religion, culture, language, dialect, etc. of users that providedinput used in creating the palette), or the like. In some embodiments,the palette data store 118 and/or some other data store may store dataassociated with color names of individual colors and/or metadataassociated with color names. Metadata associated with color names and/orsearch phrases may be similar to the metadata associated with colorpalettes (e.g., tags, popularity, time of creation, geolocation data,localization and/or internationalization data, last update time,semantics, features, conditions, and/or associated demographics of theirrespective creators, etc.).

The image service 116 (or any other service) may be connected to and/orin communication with an item data store 150 that stores images, iteminformation, metadata, and/or attributes regarding a number of items,such as items listed in an electronic catalog as available for browseand/or purchase. Item data stored in item data store 150 may include anyinformation related to each item. For example, item data may include,but is not limited to, price, availability, title, item identifier, itemimages, item description, item attributes, keywords associated with theitem, etc. In some embodiments, the item data store 150 may storedigital content items (e.g., audiobooks, electronic books, music,movies, multimedia works, etc.). By way of further example, the itemmetadata may indicate the item type and/or category, such as “dress” and“clothing,” or “blender” and “kitchen appliance.” A retail server mayalso be connected to or in communication with a user data store (notillustrated) that stores user data associated with users of the retailserver, such as account information, purchase history, browsing history,item reviews and ratings, personal information, user preferences,location information, etc. In some embodiments, data associated with auser data store is stored in the item data store 150. For example, itemsearch results or item recommendations may be filtered and/or rankedbased on purchase history data. The image service 116 and/or the keywordservice 110 may be connected to and/or in communication with the itemdata store 150 that may be used to store one or more images associatedwith each of the number of items that can be displayed to represent theitem in search results or the like. Multiple images can be associatedwith an item, for instance to aid a user in a purchase decisionregarding the item.

The network 120 may include any suitable combination of networkinghardware and protocols necessary to establish communications within theoperating environment 100. For example, the network 120 may includeprivate networks such as local area networks (LANs) or wide areanetworks (WANs) as well as public or private wireless networks,satellite networks, cable networks, cellular networks, or the Internet.In such embodiments, the network 120 may include hardware (e.g., modems,routers, switches, load balancers, proxy servers, etc.) and/or software(e.g., protocol stacks, accounting software, firewall/security software,etc.) that establish networking links within the operating environment100. Additionally, the network 120 may implement one of variouscommunication protocols for transmitting data between components of theoperating environment 100.

The color data providers 130 may correspond to hosts of databases and/ordata stores of color palettes, color names, color surveys, or the like.The color palettes being ranked, rated, and/or voted on by a communityof people associated with the color data providers 130. The varioushosts can include, for example and without limitation, hosts of anartistic network site, electronic commerce site, merchandise providersor vendors, survey of the general population, designers, photographers,artists, social network sites, or the like. In some embodiments, thevarious color data providers 130 are associated with a particularcommunity of people such as artists, designers, photographers,cinematographers, fashion experts, critics, or the like. In certainembodiments, the color data providers 130 are accessible by the publicin general such that the associated color palettes are ranked, rated, orvoted on by people that do not necessarily belong to any particularcommunity or group.

The color data providers 130 can create and/or curate color combinationsbased on the preferences of each provider's community of users.Particular color data providers 130 may be associated with a particularcommunity, which includes a biased population. This may allow for thekeyword service 110 to retrieve palettes with a known and/or desiredbias depending at least in part on the use of the retrieved palettes.This may also allow for the keyword service 110 to reduce or remove thebias present in different communities by combining palettes from aplurality of communities of users.

The color data providers 130 can be associated with any computingdevice(s) that can facilitate communication with the image processingservice 102 via the network 120. Such computing devices can generallyinclude wireless mobile devices (e.g., smart phones, PDAs, tablets,wearable computing devices, or the like), desktops, laptops, gameplatforms or consoles, electronic book readers, television set-topboxes, televisions (e.g., internet TVs), and computerized appliances, toname a few. Further, such computing devices can implement any type ofsoftware (such as a browser or a mobile media application) that canfacilitate the communications described above.

One skilled in the relevant art will appreciate that the components andconfigurations provided in FIG. 1 are illustrative in nature.Accordingly, additional or alternative components and/or configurations,especially regarding the additional components, systems and subsystemsfor facilitating functions disclosed herein may be utilized.

FIG. 2 illustrates a block diagram of example components of a computingsystem capable of implementing a keyword service 110 utilized inaccordance with the operating environment 100 of FIG. 1. The examplecomputing system includes an arrangement of computer hardware and/orsoftware components that may be used to implement aspects of the presentdisclosure. Those skilled in the art will appreciate that the computingsystem may include different components (e.g., more or fewer components)than those depicted in FIG. 2. Those skilled in the art will alsoappreciate that not all of these generally conventional components havebeen shown but are understood to be present to enable the functionalityand processes described herein.

The computing system may include a processing unit 202, a networkinterface 204, a non-transitory computer-readable medium 206, and aninput/output device interface 208, all of which may communicate with oneanother by way of a communication bus. The network interface 204 mayprovide the keyword service 110 with connectivity to one or morenetworks or computing systems. The processing unit 202 may thus receiveinformation and instructions from other computing devices, systems, orservices via a network. The processing unit 202 may also communicate toand from memory 210 and further provide output information via theinput/output device interface 208. The input/output device interface 208may also accept input from various input devices, such as a keyboard,mouse, digital pen, touch screen, etc.

The memory 210 may contain computer program instructions that theprocessing unit 202 may execute in order to implement one or moreprocesses described herein. The memory 210 generally includes RAM, ROM,and/or other persistent or non-transitory computer-readable storagemedia. The memory 210 may store an operating system 214 that providescomputer program instructions for use by the processing unit 202 in thegeneral administration and operation of the keyword service 110. Thememory 210 may further include other information for implementingaspects of the present disclosure.

In some embodiments, the memory 210 includes an interface module 212.The interface module 212 can be configured to facilitate generating oneor more user interfaces through which a user computing device 102, mayinteract with the keyword service 110 to access related image-data, itemdata, color palettes, affiliated colors, etc. Specifically, theinterface module 212 can be configured to generate user interfaces forreceiving keywords, outputting images, data, colors, color names, items,and/or color palettes. The user interface can be implemented as agraphical user interface (GUI), Web-based user interface, computerprogram, smartphone or tablet program or application, touchscreen,wearable computing device interface, command line interface, gesture,voice, or text interface, etc., or any combination thereof.

In addition, the memory 210 may include a keyword module 216 that may beexecuted by the processing unit 202. In some embodiments, the keywordmodule 216 implements aspects of the present disclosure. For example,the keyword module 216 can be configured to process keyword data, colordata, instructions, or metadata. Specifically, the keyword module 216can be configured to perform functions described herein, such asdetermining data from keyword searching of color palettes, determiningaffiliated color palettes associated with keyword searching of colorpalettes, retrieving color names associated with color palettes,retrieving color palettes based on historical trend data, or the like.

It should be noted that the keyword service 110 may be implemented bysome or all of the components present in the computing system asdiscussed herein with respect to FIG. 2. In addition, the keywordservice 110 may include additional components not present in FIG. 2. Inaddition, the computing system described above may also includeadditional modules or be implemented by computing devices that may notbe depicted in FIG. 1 or 2. For example, although the interface module212 and the keyword module 216 are identified in FIG. 2 as singlemodules, one skilled in the relevant art will appreciate that themodules may be implemented by two or more modules and in a distributedmanner. As another example, the computing system and its components canbe implemented by network servers, application servers, databaseservers, combinations of the same, or the like, configured to facilitatedata transmission to and from color data providers 130 or user computingdevices 102 via network 120. Accordingly, the depictions of the modulesare illustrative in nature. It will also be appreciated that, in someembodiments, a user device may implement functionality that is otherwisedescribed herein as being implemented by the elements and/or modules ofthe computing system implementing the keyword service 110. For example,the user computing device 102 may receive code modules or otherinstructions from the computing system implementing the keyword service110 via the network 120 that are executed by the user computing device102 to implement various aspects of the present disclosure.

Example Process to Search Color Palettes Using Keywords to Retrieve Data

FIG. 3 is a flow diagram of an illustrative method 300 implemented atleast in part by the keyword service 110 identifying image or other databased on a keyword associated with one or more color palettes. While theillustrative method will be described below as being implemented by thecomponents of keyword service 110, in other embodiments, a similarmethod may be implemented by a computing system responsible forproviding front-end communication with a user computing device. Asdiscussed above, illustrative method 300 may be implemented entirely bya user device, such as user computing device 102, in some embodiments.

The illustrative method 300 begins at block 302, where the keywordservice 110 may receive a keyword and/or phrase. The received keywordand/or phrase of words may be received via user input or automatedinput. User input may be received in multiple formats, such as a searchstring, word, phrase, alphanumeric string, symbol(s), and/or audio inputof a word or phrase. A non-color keyword may be received that may besuggestive of one or more colors (e.g., summery, sunny, mellow, dressy,holiday, Halloween, Christmas, Chanukah, sports team name, etc.).Automated input may include textual words associated with audio content,a song, an e-book, and/or data associated with an upcoming holidayand/or season such as fall. Other automated input data may includetrending data based on geolocation searches. A particular search phrasemay be popular within a particular area and/or region, for example thephrase “Super Bowl” near the time and city of its location, which may beused as input for the illustrative method 300.

At block 304, the keyword service 110 and/or palette service 112identifies color palettes associated with the received keyword and/orphrase. A color palette may be associated with a name, tags, and/or anyother metadata. The characteristics, properties, attributes, and/orother metadata associated with color palettes are discussed in furtherdetail with reference to FIGS. 5 and 8A-B. For example, as describedherein, color palettes and/or other metadata associated with colorpalettes may be generated by humans. The keyword service may identifyone or more color palettes from the palette data store based on thekeyword using search algorithms including search string algorithms,partial matching of complete strings and/or words, search enginealgorithms, natural language searching, state machines such asdeterministic finite automatons or nondeterministic finite automatons,fuzzy searching, machine learning, neural networks, or the like and/orsome combination thereof. For example, a keyword and/or phrase mayinclude the word “fire.” In the example, the keyword service may matchcolor palettes having names such as “fire night,” “firestorm,”“firestarter,” or the like. The keyword search may also match colorpalettes based on tags, metadata, and/or some other data such as a datastore of related words. Thus, a search on the keyword “fire” may returncolor palettes with names such as “sun,” “spicy,” “inferno,” etc.

At block 306, the keyword service 110 and/or some other service mayperform additional color palette processing. Additional color paletteprocessing may include retrieving the color palettes from the palettedata store or other additional data retrieval, which is discussed infurther detail with reference to FIG. 4.

At block 308, the keyword service 110 and/or the image service 116retrieves images associated with one or more color palettes. Each colorpalette may comprise one or more colors, which may be used as inputcolors for retrieving images. Images may be retrieved from the item datastore based at least in part on the one more input colors from the colorpalettes. It may be difficult and/or computationally expensive toretrieve images, such as clothing or other items, by a specific color(e.g., a specific RGB color or a RGB color range). For example,searching by color in a structured data store can be challenging due tothe multidimensional nature of colors. Thus, the keyword service and/orthe image service may retrieve images using fast color indexing and/orsearching, as described in U.S. patent application Ser. No. 14/315,700,entitled “FAST COLOR SEARCHING,” filed on Jun. 26, 2014, which isincorporated by reference herein in its entirety. In some data stores,items may not contain color information and/or items may be manuallycategorized by color into broad categories of a few colors. Thus, colorscan be extracted from an image, such as an image provided by a user oran image of an item in an item catalog or on a network site, asdescribed in U.S. patent application Ser. No. 14/316,483, entitled“IMAGE-BASED COLOR PALETTE GENERATION,” filed on Jun. 26, 2014, which isincorporated by reference herein in its entirety. Matching colors fromthe retrieved color palettes to the colors of images can also includedetermining a threshold and/or color range within which a color will beconsidered to be the same as, or sufficiently similar to, the inputcolor. The threshold can be based on color distance according to a colordistance formula(e). An example of such a formula is one based on ahuman perceptible color difference. Examples and/or techniques regardinghuman perceptible color difference and the human color distance formulaare discussed in further detail in U.S. patent application Ser. No.14/315,700, entitled “FAST COLOR SEARCHING,” filed on Jun. 26, 2014,and/or U.S. patent application Ser. No. 14/316,483, entitled“IMAGE-BASED COLOR PALETTE GENERATION,” filed on Jun. 26, 2014. In thismanner, in some embodiments, images may be retrieved that include colorsthat are not identical to the input color, but that include colors whichare sufficiently close to the input color are included in the searchresults.

At block 310, the keyword service 110 and/or the image service 116 mayoptionally retrieve data associated with the retrieved images. Aspreviously discussed, in an electronic commerce context, the item datastore 150 may contain item data including, but not limited to, price,availability, title, item identifier, item description, etc., which maybe of interest and/or returned to the user. In some embodiments, otherdata and/or metadata associated with the images may be returned, such asthe time of the image (e.g., photograph, video, etc.), location of theimage, or other data associated with the image.

At block 312, the keyword service 110 may provide and/or output theretrieved images and/or data. In an electronic commerce example, where auser has searched for “fiery” or based on some other input, the keywordservice 110 may have identified one or more color palettes and imagesassociated with those one or more color palettes to be presented to theuser computing device or provided to an electronic commerce server. Insome embodiments, a benefit of searching human generated color palettesby keywords associated with a name and/or other metadata associated witha color palette is that searching by non-color terms, which are stillhighly suggestive of color, may yield an accurate and/or wide range ofcolor palettes and/or colors.

The foregoing process may be similarly used by a merchandiser and/or amaintainer of an electronic marketplace in assembling sets of items,such as clothing items, from one or more catalogs of items. For example,the catalog of items may be stored in one or more electronic catalogdata stores, such as item data store 150. A merchandiser may search on aphrase such as “baby blue” or “Monday.” The merchandiser may optionallyspecify that items in affiliated colors may be included in the outfit.The example process 300 may then generate one or more recommendedoutfits and/or items as similarly discussed above with respect toidentifying images and/or items associated with color palettes. Themerchandiser may select one or more of the presented outfits and cause arecord to be stored, for later access, of the outfits includingidentifiers associated with each item included in a given outfit and arespective same outfit. Multiple outfits may be grouped as a collection.The merchandiser may then instruct that one or more of the outfits, asselected by the merchandiser, or the collection as a whole, be publishedon a commerce marketplace or elsewhere to enable consumer access andpurchase. The merchandiser may also instruct that one or more of theoutfits, as selected by the merchandiser, or the collection as a whole,be published as an advertisement on one more sites or other advertisingchannels. Thus, searching by keywords and/or search phrases to identifyand/or determine one or more color palettes and/or colors, may be usedto determine color coordinated collections associated with thosekeywords and/or search phrases.

Example Process for Additional Color Palette Processing

FIG. 4 is a flow diagram of an illustrative method 400 implemented atleast in part by the keyword service 110 or other services foradditional color palette processing. The color palettes that may beadditionally processed may have been identified based on an associationwith the keyword, as described above with reference to block 304 and/orillustrative method 300. While the illustrative method 400 will bedescribed below as being implemented by the components of keywordservice 110 or other services, in other embodiments, a similar methodmay be implemented by a computing system responsible for providingfront-end communication with a user computing device. As discussedabove, illustrative method 400 may be implemented entirely by a userdevice, such as user computing device 102, in some embodiments.

The illustrative method 400 begins at block 402, where keyword service110 and/or the color naming service 114 identify color names associatedwith the one or more colors of color palettes. As described above, oneor more surveys and/or color data providers 130 may provide color datasuch as a human survey of color names and/or human generated data ofcolor names. For example, one or more color data providers 130 may havesurveyed hundreds of thousands of users to name millions of colors. Thecolor names from a human color survey may be richer and/or more accuratethan standard color naming data stores and/or data sources. For example,color names based on a color survey may include names that are nottypical color names, but that are highly suggestive of color, such as“lime,” “asparagus,” or the like. The data from such a survey may bestored in the palette data store 118. A color naming service 114 and/orsome other service may use fast color searching techniques, as describedin application U.S. patent application Ser. No. 14/315,700, entitled“FAST COLOR SEARCHING,” filed on Jun. 26, 2014, to retrieve names forone or more colors of color palettes. In some embodiments, color namesmay be retrieved by the color naming service 114 from the palette datastore 118 or some other data store. Additionally or alternatively,similar to the described above techniques for determining images withina color range of an input color, a color name associated with a colormay be determined based at least in part on a color range within a colorspace. Color names may be presented to the user in combination withpresented items and/or images. In some embodiments, color names may beused in any other manner such as validating pre-existing color names ofitems and/or item images, as described in U.S. patent application Ser.No. 14/315,932, entitled “AUTOMATIC COLOR VALIDATION OF IMAGE METADATA,”filed on Jun. 26, 2014, which is incorporated by reference herein in itsentirety. In some embodiments, historical data regarding color names maybe stored and used similar to the trending patterns that are describedwith reference to FIGS. 8A-B and 9. For example, color name data may beassociated with votes and/or time properties to determine trendingand/or popular color names.

In some embodiments, color names may be associated with metadata and/oradditional data may be determined associated with the color names. Forexample, a color name of “manatee” may be associated with a description,type, and/or category such as “animal,” “sea animal,” “mammal,” “exoticanimal,” or the like. In some embodiments, data associated with colornames may be determined based at least in part on natural languageprocessing, linguistic techniques, machine learning, artificialintelligence, or other known techniques for dynamically determiningadditional data associated with words and/or phrases. The color namingservice 114 may use the metadata associated with color names to selectand/or prioritize color names. For example, color names associated withan animal name (or particular animal names) may be excluded in aclothing context. Additionally and/or alternatively, color naming rules,business rules, and/or logic may be used to select color names. In someembodiments, the rules may be implemented in code (e.g., JAVASCRIPT®,JAVA®, C#, or the like) and/or based on data (e.g., Extensible MarkupLanguage (“XML”), JavaScript Object Notation (“JSON”), records from adata store, or the like). For example, rules may be applied to filterany color name associated with an animal name, bodily function (e.g.,“vomit”), or any offensive term and/or phrase. In some embodiments, thecolor names from a color survey may be associated with ranking and/orvoting data indicating human preferences for color names. For example,out of thousands of survey participants, the color name “lime” mayreceive the highest votes for a particular RGB color and/or value. Thus,the color naming service 114 may return a color name with the highestranking and/or voting data associated with a particular color. In someembodiments, there may be more than one color name associated with aparticular color. In some embodiments, selection of color names may bebased on demographic data associated with the color names. For example,one or more color names for men's clothing in a particular color may bedifferent than the one or more color names for women's clothing for thesame color because human color surveys may indicate that men and womenperceive the same colors differently. Selections of color names may bebased on regional and/or cultural differences in the perception(s) ofcolors. For example, the same color may have two different color namesin different regions of the world (e.g., a color may be named “bluish”in Western countries and “greenish” in Eastern countries). In otherwords, the color names associated with particular colors and/or sets ofcolors may be localized and/or customized to the regional and/orcultural preferences of color names based on metadata and/or colorsurvey data. In some embodiments, localization and/or internalization ofcolor names may include translating one or more color names into therespective language of a particular user.

At block 404, the keyword service 110 and/or the affiliated color 122service may optionally identify affiliated color palettes associatedwith the previously identified color palettes. As used herein,“affiliated color” and/or “affiliated color palettes” refer to colorsassociated with an initial color or colors based at least in part onhuman color preferences and/or data store of color palettes. Forexample, a color palette may include one or more input colors. The oneor more input colors of the color palette may be included in other colorpalettes and, therefore, the other color palettes and/or their colorsmay be affiliated with the one or more input colors. The affiliatedcolor techniques may be used to generate a color palette based at leastin part on an input color or colors and/or identifying related colorpalettes to an input color or colors. More information regardinggenerating affiliated colors may be found in U.S. patent applicationSer. No. 14/316,292, entitled “BUILDING A PALETTE OF COLORS BASED ONHUMAN COLOR PREFERENCES,” filed on Jun. 26, 2014, which is incorporatedby reference herein in its entirety.

The affiliated colors and/or color palettes associated with the one ormore input colors may be based at least in part on weighting and/or rankdata provided by the color data providers 130. For example, one or morecolor palettes may have been voted on, ranked, and/or rated, asdescribed in further detail with reference to FIGS. 8A-B. In someembodiments, adjusting the weight of the color includes scaling theranking, rating, and/or number of votes based at least in part on anumber of factors, which can include which users voted on the palette,the age of the palette, the number of comments on the palette, and thelike. Thus, a preferred, ranked, and/or highest-ranked list ofaffiliated colors may be generated based on ranking data and/or votes byhumans. Generation of affiliated colors may be further based onweighting data. Where a color appears in more than one palette, theweight of that color is the combination of the weights derived from eachoriginating palette. As an example of a simple case, where a colorappears in three palettes, the weight of that color can be equal to thesum of the votes of each of the three palettes. It is to be understoodthat other weight aggregation schemes can be used without departing fromthe scope of this disclosure. For example, weights can be aggregatedusing a weighted average of votes, an arithmetic mean of votes, or usingsome other algorithm (where votes can be the number of votes for apalette, the average rating of a palette, or the ranking of a palette).The weights of each color may be tallied and provided in an ordered orranked list of affiliated colors, where the rank of an affiliated coloris based at least in part on the relative weight of the color. Thekeyword service 110 can take a subset of the ordered list of affiliatedcolors based at least in part on a desired, targeted, and/or thresholdnumber of colors to include in the list, a threshold weight factor toinclude in the list, a variety of colors in the list, or the like.

In some embodiments, affiliated color palettes may be generated. Forexample, a first color can be selected from a determined and/or searchedcolor palette. The first color may be present in other related colorpalettes. A list of affiliated colors can be generated by identifyingthe other colors in the palettes. For each affiliated color in the list,a weight can be assigned based on the ranking, rating, and/or number ofvotes the containing palette has received. The list of affiliated colorscan be sorted based on the assigned weights. The keyword service 110and/or affiliated color service 122 can select an affiliated color fromthe sorted list to add to a generated affiliated color palettecontaining the initial color. When the selected affiliated color isadded to the palette, a new list of affiliated colors can be generatedbased at least in part on the colors in the palette, which allows theaffiliated color service to continue to build the color palette. Athreshold of colors may be used by the affiliated color service to stopadding colors to the generated affiliated color palette.

In some embodiments, there may be various uses of determining affiliatedcolors or color palettes. For example, in a merchandiser and/orelectronic commerce use case, upon searching a keyword or automatedinput, a user may receive a list of images and/or items based ondetermined one or more color palettes and/or one or more affiliatedcolor palettes. Thus, a user may be presented with one or more colorpalettes based on weighting and/or ranking data that enhances thecommerce, curation, and/or merchandising experience (such as byproviding recommendations of items). For example, the user may beexposed to a wide range of images, and/or items associated with colorpalettes than would otherwise be possible without the use of affiliatedcolor palettes. User interface embodiments related to electroniccommerce are described in further detail with reference to FIG. 6. In avisualization example, mood and/or setting colors or images includingcertain colors may be surfaced and/or presented to a user based onaffiliated colors or color palettes. User interface embodiments relatedto various color visualizations are described in further detail withreference to FIGS. 7A-B.

At block 406, the keyword service 110 or the palette service 112 mayoptionally rank, select, and/or filter color palettes based onhistorical data. As described above and below with reference to FIGS.8A-B and/or 9 the palette data store 118 and/or one or more color dataproviders 130 may store data related to votes, rankings, data entry,changes of color palettes, and/or other metadata associated with colorpalettes. The keyword service 110 may access historical data associatedwith the color palettes. For example, color palettes may be orderedand/or ranked by date of creation. Thus, the keyword service 110 mayinclude logic and/or preferences to retrieve the newest color paletteswithin a time threshold. In other words, priority color palettes may beselected based on a time property and/or value associated with colorpalettes. In some embodiments, the keyword service may return colorpalettes of a particular date range. For example, for a Halloween timeperiod, color palettes may be returned that have a creation date nearestto October. Access to historical data may also allow the identificationof trending patterns associated with particular keyword searches,popularity of color palettes, changes of color palettes over time,and/or trends of any other data associated with color palettes. Forexample, historical data may be used to determine attitudes andperceptions of colors, and what colors coordinate with what colors,which may change over time. Historical data and/or trends associatedwith color palettes are discussed in further detail with reference toFIGS. 8A-B and/or 9. Thus, ranking of color palettes may be used inassociation with color user interfaces and/or visualizations based onkeyword and/or automated input searching of color palettes.

In some embodiments, the keyword service 110 may filter and/or selectcolor palettes by keyword and/or search phrase history associated withone or more color palettes. Filtering and/or selection of color palettesmay be accomplished by accessing historical data associated withkeywords and/or color palettes from the palette data store 118. Thekeyword service 110 and/or some other service may determine trendingand/or historical patterns based on keywords and/or search phrases. Forexample, a keyword and/or search phrase, such as “summery,” may beassociated with one or more colors and/or color palettes at a particulartime. At a later time, the colors and/or color palettes associated withthe keyword and/or search phrase “summery” may have changed. Thus, thekeyword service 110 may determine trending and/or historical patternsassociated with particular keywords and/or search phrases. In thekeyword “summery” example, colors and/or color palettes associated withthe keyword “summery” may be trending towards light blue colors at onetime, whereas in the previous year the keyword “summery” may have beenassociated with another color such as pink. Thus, the keyword service110 may filter color palettes based on trends associated with keywordsearches by favoring and/or preferring trending colors and/or colorpalette patterns. In another example, the keyword service 110 maydetermine color palettes associated with a search phrase based on a morerecent time of creation of the color palettes and/or for color palettescreated within a threshold period of time, e.g., within the last year.In some embodiments, historical data associated with color palettes maybe used to predict future color trends. Historical data associated withkeyword searches is discussed in further detail with reference to FIG.9.

Example Color Palettes

FIG. 5 illustrates example color palettes 502A-E retrieved by theexample method 300 of FIG. 3. The color palettes 502A-E can be from adata store of human or machine-created color palettes. Each of the colorpalettes 502A-E include one or more colors and a name for the colorpalette. As described above, a name of the color palette or other dataassociated with the color palette may be used for searching. Forexample, the names “fiery,” “summery,” “Dracula,” “climbing wall,” and“deep space,” may be associated with color palettes 502A, 502B, 502C,502D, and 502E, respectively. In some embodiments, humans may assignand/or create names for color palettes.

Each color palette may be associated with one or more tags. For example,the color palette 502A, “fiery,” may be associated with one or more tagsincluding “red,” “hot,” and/or “dangerous” tags 504A-C. The tags may behuman generated, generated by a computer system and/or some combinationthereof. For example, when a human creates a color palette, the creatormay associate one or more tags with the color palette. As describedabove, tags may be used for searching color palettes as well. In someembodiments, tagging of color palettes may be wholly or partiallyautomated. For example, a word data store, such as a data store ofsynonyms, may be used to automatically tag color palettes with synonymtags based on one or more words of a color palette name. For example,synonym tags of the word “fiery” may include “flaming,” “hot,” or otherwords of the like.

In some embodiments, the colors identified in color palettes may beprovided in various representations and/or formats. For example, colors1-5 of color palette 502A may be represented by 3-dimensional RGB colorsin the palette data store 118. For example, color 1 may have an RGBvalue (e.g., #c108e5 in hex) that includes three dimensions: the reddimension (“c1”), the green dimension (“08”), and the blue dimension(“e5”). As described above, the colors identified in color palettes maybe searched efficiently using fast color search techniques as describedin U.S. patent application Ser. No. 14/315,700, entitled “FAST COLORSEARCHING,” filed on Jun. 26, 2014. In some embodiments, color palettesmay include any number of colors.

Example User Interfaces

FIG. 6 is an illustrative user interface 600 generated at least in partby the keyword service 110 that includes a search section 610, a colorpalette section 620, item sections 630A-B, and an item selector 640.Illustrative user interface 600 may allow a user, such as a customerand/or merchandiser, to search for color palettes by keywords, viewmatching color palettes, and select items associated with colors of thecolor palettes. For example, user interface 600 may allow a merchandiserfor an electronic retailer to curate a collection for an electroniccatalog. As described below, many elements and/or features of the userinterface 600 may be provided and/or implemented by the keyword service110 and/or some other service with reference to illustrative method 300.It will be appreciated that while embodiments herein are often describedwith respect to clothing, this is for illustrative purposes and is notmeant to limit the scope of the presentation or searching techniquesdescribed herein, which can be used to accommodate other types of imagesand items as well. For example, collections of interior decoration,furniture, car styling, paint schemes, to name a few, could also benefitfrom the efficient data and/or color palette searching discussed herein.

As illustrated, a user may enter a keyword and/or search word or wordsinto search section 610, here “summery.” The keyword service 110 mayreceive the search word and return one or more color palettes in thecolor palette section 620 based at least in part on the search word. Theprovided color palette may include colors 622A-F. The user interface mayprovide item section 630A and item section 630B to allow a user toselect one or more items that have colors 622A-F. For example, itemspresented in section 630A and 630B may have been determined and/orreturned by the keyword service 110 from the item data store by matchingthe one or more colors 622A-F. In some embodiments, as illustrated initem section 630A, a user may select a color selector 636 of the colorpalette to preview the item 634 in the particular color, here color622A. Navigation selector 632 of the item section 630A may allow a userto navigate through different items and/or styles associated with theitem. For example, a user may navigate with navigation selector 632 toview nineteen different dresses of and/or sufficiently close to theselected color. In some embodiments, the items presented may be filteredand/or ranked based on trending data such as purchase history data,popular keyword searches, and/or items associated with popular colorpalettes.

In some embodiments, the user interface allows selection of other items.Item selector 640 may allow a user to select additional items. Forexample, upon selecting item selector 640, a user may be visuallypresented with different types of items for future selection. In theillustrated clothing example, additional items may include watches,accessories, boots, shirts, pants, jackets, and/or other items notcurrently presented. Similar to item section 630A or item section 630B,an additional item section may be presented in the user for selectingitems of one of the colors 622A-F. As a result, a user may be able toassemble a collection of items of colors corresponding to a colorpalette search result. In some embodiments, color names may be presentedto the user with reference to colors 622A-F.

In other embodiments, a user may search a personal data store of imagesbased on keyword searches associated with colors of the images. Forexample, where a user searches “fiery,” color palettes may be retrievedmatching that keyword. Images from a library and/or data store may beretrieved that are associated with the one or more colors from the colorpalettes. For example, images in a photography library may correspond tocolor photographs of persons, buildings, places, and/or objects in theworld. Using the systems or techniques described in U.S. patentapplication Ser. No. 14/316,483, entitled “IMAGE-BASED COLOR PALETTEGENERATION,” filed on Jun. 26, 2014, colors may be extracted fromimages, such as photographs of friends in social settings, such that theimages may have representative one or more colors extracted from theimages that may be used for keyword searching of color palettes.

FIGS. 7A-B illustrate an example sequence of user interfacerepresentations illustrating color visualizations based on keywords ofaudio and/or text content. Such visualizations may provide mood,lighting, setting, atmosphere, and/or surface colors associated with theaudio and/or text content that enhance the user experience with a userinterface. As illustrated, the user interface 700 may be displayed onuser computing device 102. The user interface may be generated at leastin part by the user computing device 102 and/or the keyword service 110,depending on the embodiment. As illustrated, user computing device 102may aurally present audio 720 corresponding to words via one or morespeakers 704 and/or one or more audio outputs, which may be provided tospeakers or headphones. Example user interface 700 additionally includesa displayed portion of the text content 702, which represents text ofthe spoken words of the audio data (such as an audiobook). Text content702 is shown for illustrative purposes only and may not be displayed inother embodiments. The audio 720 presented in the illustrated exampleincludes narrated audio content, which are the spoken words or phrases“an evil hour detecting his infamy.”

The example user interface 700 includes color area and/or colorvisualization 710A. Data corresponding to the color area 710A may beretrieved and/or generated at least in part by the keyword service 110.For example, the text content 702 may include one or more words. The oneor more words and/or current playback of the one or more words may bereceived by the keyword service 110 as input for searching and/orretrieving one or more color palettes as described herein. Text content702 may include the word “evil” 712. The keyword service 110 mayidentify color palettes with names including word 712 and/or related toword 712. As illustrated, one or more colors 710A associated with thecolor palette may be visualized during current playback of the audio ortext content. Thus, color may be used to enhance the user experiencewith color effects. Other techniques, as described herein, may be usedfor identifying color palettes associated with keywords such aspresenting color visualizations associated with the affiliated colors orpalettes based on the previously searched and/or determined colorpalette. Also, it will be appreciated that color visualization 710A mayinclude images of colors associated with a color of a color palette, forexample, images with extracted colors, such as images from a user'sphotograph album.

In some embodiments, color visualizations based on keywords may be usedfor different user computing devices and/or other media content withassociated textual content. For example, a song may be played on usercomputing device 102 and the song may be associated with textcorresponding to the lyrics of the song. Other examples ofcontinuously-presented content with associated textual content mayinclude podcasts, news programs, musical works, electronic books,television programs, video clips, movies, multimedia content, videogames, and other types of content. Likewise, the associated textualcontent may include any type of digital textual content that isassociated to the item of continuously-presented content, such as anelectronic book, closed caption content, screenplay, script, libretto,transcription (e.g., speech-to-text) or other textual content. As willbe appreciated, in some embodiments, textual content representing wordsspoken in various types of audio content may be determined dynamicallyusing speech recognition and/or other known methods. Accordingly, insome embodiments, textual content for a given portion of audio contentmay be determined dynamically for keyword searching. For example,instead of using speech recognition for an entire song, which may becomputationally expensive, the song may be sampled with speechrecognition techniques, at regular intervals, to retrieve textualkeywords at intervals that may be used to retrieve color palettes.

As illustrated in FIG. 7B, different colors of a color palette and/oraffiliated color palettes may be presented to the user. For example, asplayback continues of the media content, the color visualization 710Bmay have changed from color visualization 710A of FIG. 7A. The searchedcolor palette corresponding to the identified keyword may include colorscorresponding to color visualizations 710A and 710B. As playbackcontinues the keyword service 110 may determine other words forsearching for color palettes. In some embodiments, words may be selectedat random and/or at predefined and/or configurable intervals. In someembodiments, the weighting and/or ranking data associated with colorpalettes and/or affiliated color palettes may be used to selectpreferred color palettes for color visualizations. In some embodiments,color palettes may be retrieved for a series of words in text content702. The keyword service 110 may then retrieve the most frequent and/ordominant colors in the respective color palettes such that theassociated color visualizations represent and/or associated with amajority of the words in a section of text content 702.

In some embodiments, color visualizations may be based on keywords fromdetected and/or input audio. An input device of user computing device102 may detect and/or receive audio input data. For example, amicrophone and/or other input device of user computing device 102 maydetect ambient music and/or audio. One or more techniques, such as voiceand/or speech recognition, may be used to convert the detected audiointo one or more keywords and/or words. Thus, the keyword service 110may use the color visualizations techniques described herein to causethe home screen and/or display of a user computing device 102 to presentvarious color visualizations in response to detected audio such asambient music (playing outside of the user computing device 102) or aconversation of persons nearby.

Example Color Palette Historical Data

FIG. 8A illustrates an example color palette associated with historicaldata. Aspects of color palette 802A-D may be similar to the colorpalettes of FIG. 5. However, in some embodiments, color palette 802A-Dmay be further associated with historical data. As illustrated, colorpalette 802A-D may be the same color palette, “palette 1,” over time.For example, “palette 1” may be associated with times and/or dates one,two, three, and four, which correspond to the color palette 802A, 802B,802C, and 802D.

Voting, ratings, and/or ranking data may also be associated with colorpalettes. As used herein, the terms votes, rating, and/or ranking areused to indicate that there is a value associated with the palette wherethe value is indicative of a level of human preference for the palette(such as contributed by a community of users and/or color data providers130). For example, “palette 1” may be associated with ratings A, B, C,and D, which correspond to the color palette 802A, 802B, 802C, and 802D.Ratings A, B, C, and/or D may be relative to each other. In other words,A may have a greater rating than C, C may have a lower rating than B,etc. The rating of a color palette can be based on a number of votes,such as where a palette's score can be incremented by a value accordingto a positive vote by a user, or similarly decremented by a valueaccording to a negative vote by a user. Similarly, the rating of a colorpalette can be based on a rating system where users can rate palettes ona rating scale (e.g., 0 to 5, 1 to 5, 0 to 10, −5 to 5, etc.). Likewise,the rating of a color palette can be based on users ranking palettesrelative to one another. Rating and/or ranking may also be determined bya number of views and/or hits. The ratings of the color palettes mayalso be associated with a time because each color palette may beassociated with a creation time, last update time, etc. Thus, thekeyword service 110 may use the time associated ratings to identifytrends in color combinations and/or to identify color combinations,which are relatively stable over time (e.g., classic colorcombinations). This can also be used to determine color combinations,which were popular at a particular time. It will be appreciated thatvarious types of trending and/or historical analysis may be performed onthe historical data. For example, for a particular keyword associatedcolor palette (e.g. “springtime”), the changes in colors associated withthat color palette may be determined over time.

By using the votes of a community of users, the generated color palettesrepresent a subjective color combination that may be different from whata mathematical formula and/or machine may provide and which is generallypreferable to users. Using human arbiters to generate color combinationscan provide color palettes that mathematical algorithms and/or machinesmay be incapable of fully determining and/or creating.

As illustrated, the color palette data store may store historical dataassociated with color palette 802A-D. In some embodiments, there may bedifferences regarding how historical data associated with color palettesis stored. For example, base data associated with the color palette maybe stored and historical data may be stored as changes from the basedata, such that a color palette at a point time may be determined byiterating through the changes over time. In some embodiments, historicaldata of color palettes may be stored as snapshots in time (e.g., eachcolor palette may be associated with one or more timestamps in a datastore). For example, a single data store query and/or look up at timefour for “palette 1” 802D may retrieve all of the data associated withthe color palette if they are stored as discrete snapshots, records,and/rows in a data store associated with times, dates, and/ortimestamps.

FIG. 8B illustrates example color palettes associated with historicaldata. Aspects of color palettes 804A-D may be similar to the colorpalettes of FIG. 5 and/or FIG. 8A. However, as illustrated in FIG. 8B, aplurality of color palettes associated with votes and/or times (e.g.,creation time of a color palette, last update time of a color palette,etc.) may be compared with each other. For example, if a keyword searchmatches both palette 804C and 804D, palette 804D may be returned ifvotes G are greater than votes F. In some embodiments, votes may beweighted by date. For example, if a keyword search returns colorpalettes 804B, 804C, and 804D, with votes of 4, 1, and 1, respectively.Color palettes 804C and 804D may be rated and/or weighted higher thancolor palette 804B because color palettes 804C and 804D are more recentin time than color palette 804B. The keyword service 110 may also filterand/or have thresholds based on time for returning color palettes. Forexample, color palettes older than one year may not be returned.

FIG. 9 illustrates example color palettes associated with historicalkeyword data. Aspects of color palettes 902A-D and/or 904A-D may besimilar to the color palettes of FIG. 5 and/or FIG. 8A-B. As illustratedin FIG. 9, a keyword and/or search phrase 910, here “springtime,” attime one, may be associated with color palettes 902A-D. As previouslydiscussed, the keyword and/or search phrase may be associated with colorpalettes 902A-D based on one or more color palette names and/or otherdata associated with the color palettes. As illustrated, at time one,the search phrase 910 may be associated with color palettes that havecommon aspects. For example, color palettes 902A-D may share a commoncolor, here color one, which may correspond to a yellow color. Thus, attime one, the search phrase 910 may be associated with a yellow color.As illustrated, at time two, the search phrase 910 may be associatedwith color palettes 904A-D. There may be some overlap and/or differencesbetween color palettes 902A-D and/or color palettes 904A-D. In otherwords, the search phrase at different points in time may be associatedwith same and/or different color palettes. In the example, palette oneis both associated with time one and time two. However, some colors ofpalette one at time one may have changed at time two, as illustrated bycolor palettes 902A and 904A, respectively. Furthermore, some colorpalettes 904B-D may be associated with search phrase 910 at time twothat were not associated with the search phrase 910 at time one. Lastly,a particular color may be associated with the search phrase 910 at timetwo that was not associated with the search phrase 910 at time one. Forexample, color palettes 904B-D may include the color thirteen (e.g., agreen color), which was not associated with the color palettes at timeone.

In some embodiments, the keyword service 110 and/or some other servicemay determine, select, and/or filter collections of color palettes basedon the historical data associated with keywords and/or search phrases.As illustrated by FIG. 9, historical data associated with keywordsand/or color palettes may indicate one or more color trends, trends incolor preferences, and/or colors associated with keywords over time. Inthe example, the search phrase “springtime” 910 at time one wasassociated with a yellow color and/or at time two, the search phrase 910was associated with a green color. Thus, the keyword service 110 mayfilter out color palettes and/or update a set of color palettes that donot match one or more color trends and/or may prioritize colorpreferences that correspond to the current color trends associated withthe search phrase. For example, in some embodiments, the keyword service110 may not return palette one (or may provide it a lower ranking) basedon the search phrase 910 because palette one may be outside and/or notmatch the one or more color trends. In some embodiments, the keywordand/or search history techniques may be combined with other methodsand/or techniques described herein, such as, but not limited to,affiliated colors, trending of palettes, ranking of palettes, and/orvisualizations of color palettes.

In some embodiments, collections of color palettes associated withkeywords and/or search phrases may be determined based on predictivemodels of color trends. One or more techniques for color manipulations,addition, subtraction, and/or predictive models may be used to selectand/or determine color palettes. For example, color palettes associatedwith a search phrase at a time one may be predominantly red and colorpalettes associated with the same search phrase at a time two may bepredominantly pink. Thus, the keyword service 110 and/or some otherservice may determine a color trend towards lighter colors within a redcolor space and/or range. As a result, the keyword service 110 mayselect and/or determine color palettes with colors lighter than pink forthe search term at times one and two. In other words, the keywordservice 110 may determine color trends of increasing lightness ordarkness based on changes in colors and/or color palettes over time.Alternatively and/or additionally, color techniques such as coloraddition (adding red and green to make yellow), color subtraction(subtracting blue from yellow to make green), and/or vector math may beused to determine future color trends of color palettes. For example,color palettes associated with a search phrase at time one may includethe color red, color palettes associated with the same search phrase attime two may include the color green. Thus, the keyword service 110, inresponse to receiving the same search phrase, may determine colorpalettes that include the color yellow because adding red to green makesyellow, which would comprise a predicted color trend.

In some embodiments, metadata associated with color palettes and/orsearch phrases may be used to determine color trends. For example, colorpalettes associated with the search keyword “Autumn” may trend towardsmore brown and/or orange colors at particular times and/or months duringthe year. Thus, cyclical patterns of color trends may be used todetermine, predict, and/or select color palettes associated withparticular keywords and/or phrases. Other metadata associated with colorpalettes and/or search phrases, which may be used for color trends,includes geolocation data, purchase data, and/or tags associated withdata stores of images. For example, users may tag and/or label imageswith a particular keyword and/or phrase. If a user requests colorpalettes associated with the particular keyword and/or phrase, colorsextracted from those images may be used by the keyword service 110 toselect one or more color palettes with those colors. Thus, trending dataassociated with images tagged by keywords may be used to determine colorpalettes based on keyword searches with similar words to the words ofthe image tags. Trending geolocation data may include color palettesassociated with particular regions or countries (e.g., color trendsassociated with a search phrase of “Big Ben” may be determined fromcolor palettes created in England). Trending purchase data may includesales data and/or popular items associated with images comprising one ormore colors. Thus, color palettes may be selected based on keywordsassociated with high selling items and with colors similar to the colorsextracted from images of those high selling items.

Depending on the embodiment, certain acts, events, or functions of anyof the algorithms described herein can be performed in a differentsequence, can be added, merged, or left out altogether (e.g., not alldescribed acts or events are necessary for the practice of thealgorithm). Moreover, in certain embodiments, acts or events can beperformed concurrently, e.g., through multi-threaded processing,interrupt processing, or multiple processors or processor cores or onother parallel architectures, rather than sequentially.

The various illustrative logical blocks, modules, and algorithm elementsdescribed in connection with the embodiments disclosed herein can beimplemented as electronic hardware, computer software, or combinationsof both. To clearly illustrate this interchangeability of hardware andsoftware, various illustrative components, blocks, modules, and elementshave been described above generally in terms of their functionality.Whether such functionality is implemented as hardware or softwaredepends upon the particular application and design constraints imposedon the overall system. The described functionality can be implemented invarying ways for each particular application, but such implementationdecisions should not be interpreted as causing a departure from thescope of the disclosure.

The various illustrative logical blocks and modules described inconnection with the embodiments disclosed herein can be implemented orperformed by a machine, such as a processing unit or processor, adigital signal processor (DSP), an application specific integratedcircuit (ASIC), a field programmable gate array (FPGA) or otherprogrammable logic device, discrete gate or transistor logic, discretehardware components, or any combination thereof designed to perform thefunctions described herein. A processor can be a microprocessor, but inthe alternative, the processor can be a controller, microcontroller, orstate machine, combinations of the same, or the like. A processor caninclude electrical circuitry configured to process computer-executableinstructions. In another embodiment, a processor includes an FPGA orother programmable device that performs logic operations withoutprocessing computer-executable instructions. A processor can also beimplemented as a combination of computing devices, e.g., a combinationof a DSP and a microprocessor, a plurality of microprocessors, one ormore microprocessors in conjunction with a DSP core, or any other suchconfiguration. Although described herein primarily with respect todigital technology, a processor may also include primarily analogcomponents. For example, some or all of the signal processing algorithmsdescribed herein may be implemented in analog circuitry or mixed analogand digital circuitry. A computing environment can include any type ofcomputer system, including, but not limited to, a computer system basedon a microprocessor, a mainframe computer, a digital signal processor, aportable computing device, a device controller, or a computationalengine within an appliance, to name a few.

The elements of a method, process, or algorithm described in connectionwith the embodiments disclosed herein can be embodied directly inhardware, in a software module stored in one or more memory devices andexecuted by one or more processors, or in a combination of the two. Asoftware module can reside in RAM memory, flash memory, ROM memory,EPROM memory, EEPROM memory, registers, hard disk, a removable disk, aCD-ROM, or any other form of non-transitory computer-readable storagemedium, media, or physical computer storage known in the art. An examplestorage medium can be coupled to the processor such that the processorcan read information from, and write information to, the storage medium.In the alternative, the storage medium can be integral to the processor.The storage medium can be volatile or nonvolatile. The processor and thestorage medium can reside in an ASIC. The ASIC can reside in a userterminal. In the alternative, the processor and the storage medium canreside as discrete components in a user terminal.

Conditional language used herein, such as, among others, “can,” “might,”“may,” “e.g.,” and the like, unless specifically stated otherwise, orotherwise understood within the context as used, is generally intendedto convey that certain embodiments include, while other embodiments donot include, certain features, elements and/or states. Thus, suchconditional language is not generally intended to imply that features,elements and/or states are in any way required for one or moreembodiments or that one or more embodiments necessarily include logicfor deciding, with or without author input or prompting, whether thesefeatures, elements and/or states are included or are to be performed inany particular embodiment. The terms “comprising,” “including,”“having,” “involving,” and the like are synonymous and are usedinclusively, in an open-ended fashion, and do not exclude additionalelements, features, acts, operations, and so forth. Also, the term “or”is used in its inclusive sense (and not in its exclusive sense) so thatwhen used, for example, to connect a list of elements, the term “or”means one, some, or all of the elements in the list.

Disjunctive language such as the phrase “at least one of X, Y or Z,”unless specifically stated otherwise, is otherwise understood with thecontext as used in general to present that an item, term, etc., may beeither X, Y or Z, or any combination thereof (e.g., X, Y and/or Z).Thus, such disjunctive language is not generally intended to, and shouldnot, imply that certain embodiments require at least one of X, at leastone of Y or at least one of Z to each be present.

Any process descriptions, elements or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or elements in the process. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, executedout of order from that shown, or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved as would be understood by those skilled in the art.

Unless otherwise explicitly stated, articles such as “a” or “an” shouldgenerally be interpreted to include one or more described items.Accordingly, phrases such as “a device configured to” are intended toinclude one or more recited devices. Such one or more recited devicescan also be collectively configured to carry out the stated recitations.For example, “a processor configured to carry out recitations A, B andC” can include a first processor configured to carry out recitation Aworking in conjunction with a second processor configured to carry outrecitations B and C.

While the above detailed description has shown, described, and pointedout novel features as applied to various embodiments, it will beunderstood that various omissions, substitutions, and changes in theform and details of the devices or algorithms illustrated can be madewithout departing from the spirit of the disclosure. As will berecognized, certain aspects described herein can be embodied within aform that does not provide all of the features and benefits set forthherein, as some features can be used or practiced separately fromothers. The scope of certain embodiments disclosed herein is indicatedby the appended claims rather than by the foregoing description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

It should be emphasized that many variations and modifications may bemade to the above-described embodiments, the elements of which are to beunderstood as being among other acceptable examples. All suchmodifications and variations are intended to be included herein withinthe scope of this disclosure and protected by the following claims.

What is claimed is:
 1. A system comprising: a data store configured toat least store an audiobook; and a hardware processor in communicationwith the data store, the hardware processor configured to executecomputer-executable instructions to at least: determine audiobook textdata representing a plurality of words output in a subset of theaudiobook during playback of the audiobook; determine a color palettebased at least in part on a keyword of the audiobook text data textuallycorresponding to a name of the color palette, the color palettecomprising a plurality of colors, wherein determining the color palettebased at least in part on the keyword of the audiobook text datatextually corresponding to the name of the color palette furthercomprises at least one of: determining that the name of the colorpalette includes the keyword of the audiobook text data, or determiningthat the name of the color palette is related to the keyword of theaudiobook text data using natural language processing; retrieve theplurality of colors from the color palette; determine ranking data,wherein determining the ranking data comprises: calculating a firstcumulative score for a first color of the plurality of colors and asecond cumulative score for a second color of the plurality of colors,wherein calculating the first cumulative score and the second cumulativescore further comprises: aggregating a first weight for each colorpalette of a plurality of color palettes comprising the first color; andaggregating a second weight for each color palette of the plurality ofcolor palettes comprising the second color; select the first color fromthe plurality of colors based at least in part on the ranking data thatincludes the first cumulative score and the second cumulative score; andcause presentation of the first color on a user computing device duringplayback of the audiobook on the user computing device.
 2. The system ofclaim 1, wherein the hardware processor is further configured to executecomputer-executable instructions to at least: identify one or moreimages matching the first color; and cause presentation of at least oneof the one or more images on the user computing device during playbackof the audiobook.
 3. The system of claim 1, wherein the hardwareprocessor is further configured to execute computer-executableinstructions to at least: pseudo-randomly or randomly select the keywordfrom the plurality of words.
 4. The system of claim 1, wherein the colorpalette is further determined based at least in part on a weightassociated with the color palette.
 5. A computer-implemented methodcomprising: under control of a hardware computing device configured withspecific computer-executable instructions, determining media contenttext data representing a plurality of words output in a subset of mediacontent during presentation of the media content; determining a colorpalette based at least in part on a keyword of the media content textdata textually corresponding to a name of the color palette, the colorpalette comprising a plurality of colors, wherein determining the colorpalette based at least in part on the keyword of the media content textdata textually corresponding to the name of the color palette furthercomprises at least one of: determining that the name of the colorpalette includes the keyword of the media content text data, ordetermining that the name of the color palette is related to the keywordof the media content text data using natural language processing;retrieving the plurality of colors from the color palette; determiningranking data, wherein determining the ranking data comprises:calculating a first cumulative score for a first color of the pluralityof colors and a second cumulative score for a second color of theplurality of colors, wherein calculating the first cumulative score andthe second cumulative score further comprises: aggregating a firstweight for each color palette of a plurality of color palettescomprising the first color; and aggregating a second weight for eachcolor palette of the plurality of color palettes comprising the secondcolor; selecting the first color from the plurality of colors based atleast in part on the ranking data that includes the first cumulativescore and the second cumulative score; and causing display of the firstcolor during presentation of the media content.
 6. Thecomputer-implemented method of claim 5, further comprising: identifyingone or more images corresponding to the first color; and causing displayof at least one of the one or more images during presentation of themedia content.
 7. The computer-implemented method of claim 5, whereinthe first color is retrieved using a fast color search.
 8. Thecomputer-implemented method of claim 5, wherein the media contentcomprises at least one of audio data or video data.
 9. Thecomputer-implemented method of claim 5, further comprising:pseudo-randomly or randomly selecting the keyword from the plurality ofwords.
 10. The computer-implemented method of claim 5, wherein the mediacontent text data is determined dynamically through speech recognition.11. The computer-implemented method of claim 5, wherein the colorpalette is further determined based at least in part on a weightassociated with the color palette.
 12. A non-transitorycomputer-readable storage medium storing computer executableinstructions that when executed by a processor perform operationscomprising: determining media content text data representing a pluralityof words output in a subset of media content during presentation of themedia content; determining a first color palette based at least in parton a first keyword of the media content text data textuallycorresponding to a first name of the first color palette, the firstcolor palette comprising a plurality of colors, wherein determining thefirst color palette based at least in part on the first keyword of themedia content text data textually corresponding to the first name of thefirst color palette further comprises at least one of: determining thatthe first name of the first color palette includes the first keyword ofthe media content text data, or determining that the first name of thefirst color palette is related to the first keyword of the media contenttext data using natural language processing; retrieving the plurality ofcolors from the first color palette; determining ranking data, whereindetermining the ranking data comprises: calculating a first cumulativescore for a first color of the plurality of colors and a secondcumulative score for a second color of the plurality of colors, whereincalculating the first cumulative score and the second cumulative scorefurther comprises: aggregating a first weight for each color palette ofa plurality of color palettes comprising the first color; andaggregating a second weight for each color palette of the plurality ofcolor palettes comprising the second color; selecting the first colorfrom the plurality of colors based at least in part on the ranking datathat includes the first cumulative score and the second cumulativescore; and causing display of the first color during presentation of themedia content.
 13. The non-transitory computer-readable storage mediumof claim 12, wherein the operations further comprise: identifying one ormore images corresponding to the first color; and causing display of atleast one of the one or more images during presentation of the mediacontent.
 14. The non-transitory computer-readable storage medium ofclaim 12, wherein the first color is retrieved using a fast colorsearch.
 15. The non-transitory computer-readable storage medium of claim12, wherein the media content comprises at least one of audio data orvideo data.
 16. The non-transitory computer-readable storage medium ofclaim 12, wherein the operations further comprise: selecting a secondkeyword from the plurality of words, the second keyword different fromthe first keyword; determining a second color palette based at least inpart on the second keyword textually corresponding to a second name ofthe second color palette, the second color palette different from thefirst color palette; and causing display of a color from the secondcolor palette instead of the first color during presentation of themedia content.
 17. The non-transitory computer-readable storage mediumof claim 12, wherein the media content text data is determineddynamically through speech recognition.
 18. The non-transitorycomputer-readable storage medium of claim 12, wherein the first colorpalette is further determined based at least in part on a weightassociated with the first color palette.
 19. The non-transitorycomputer-readable storage medium of claim 12, wherein the first keywordcomprises two or more words.
 20. The non-transitory computer-readablestorage medium of claim 12, wherein the operations further comprise:selecting the first keyword at a predefined interval of words from theplurality of words.